home *** CD-ROM | disk | FTP | other *** search
/ Apple II Magazines (DO) / Softdisk Magazette Volume 2, No. 08 (1983-04)(Softdisk)(Disk 1 of 2 Side B).zip / Softdisk Magazette Volume 2, No. 08 (1983-04)(Softdisk)(Disk 1 of 2 Side B).do / SUB.DRILL.bas < prev    next >
BASIC Source File  |  1996-12-24  |  8KB  |  248 lines

  1. 1  REM  ADDITION DRILL AND PRACTICE
  2. 2  REM  COPYRIGHT (C) 1982 - JOHN BEIDLER
  3. 3  REM   MAY BE DUPLICATED FOR
  4. 4  REM  EDUCATIONAL PURPOSES BUT
  5. 5  REM  NOT FOR RESALE
  6. 10  DIM A(10),P(10,10)
  7. 15  GOSUB 4000
  8. 20  GOSUB 7000: REM  INITIALIZE 
  9. 30  GOSUB 2000: REM  MAIN PROCEDURE
  10. 40  GOSUB 4000: REM  MARQUE WRAPUP
  11. 50  PRINT D$;"RUN START.DRILLS"
  12. 99  END 
  13. 300  REM  FILE THE PROBLEM
  14. 305 X5 = X5 +1
  15. 310  GOSUB 1100
  16. 320  PRINT "S": PRINT P
  17. 330  FOR I5 = 0 TO N0 -1
  18. 335  FOR J5 = 0 TO S0 -1
  19. 340  PRINT P(I5,J5)
  20. 350  NEXT J5: NEXT I5
  21. 390  GOSUB 1150
  22. 399  RETURN 
  23. 500  REM  ERROR IN ANSWER
  24. 501  GOSUB 7150
  25. 505  IF R0 = 0  THEN E(1) = E(1) +1
  26. 506  IF R0 < >0  THEN E(3) = E(3) +1
  27. 507  VTAB 12 +N0 +3: HTAB 10
  28. 508  INVERSE : PRINT "THAT IS WRONG";: NORMAL 
  29. 510  IF X0 = 0  THEN X0 = 1: GOSUB 300
  30. 520  GOSUB 1100
  31. 530  PRINT "A": PRINT I: PRINT A9
  32. 540  GOSUB 1150
  33. 547  VTAB 12 +N0 +3: HTAB 10: PRINT "              ";
  34. 549  VTAB 12 +N0 +1: HTAB 20 +S0 -2 *I
  35. 550  IF R0 = R9  THEN A9 = A(I): GOTO 633
  36. 555  VTAB 12 +N0 +3: HTAB 10
  37. 565  NORMAL : HTAB 10: PRINT "    TRY AGAIN";: GOSUB 1200
  38. 570  HTAB 10: PRINT "             "
  39. 598 R0 = R0 +1
  40. 599  GOTO 615
  41. 600  REM  PROBLEM DRILL PROCEDURE
  42. 605 X0 = 0: REM  ERROR THIS PROBLEM
  43. 610  FOR I = 0 TO S0
  44. 611  IF (I = S0)  AND (A(I) = 0)  THEN 680
  45. 612 R0 = 0
  46. 615  VTAB 12 +N0 +1: HTAB 20 +S0 -2 *I
  47. 620  GET A$: IF (A$ <"0")  OR (A$ >"9")  THEN 620
  48. 625 A9 =  ASC(A$) - ASC("0")
  49. 630  IF A9 < >A(I)  THEN 500
  50. 632  GOSUB 7100
  51. 633 R0 = 0
  52. 635  PRINT A9
  53. 636  IF I = S0  THEN 680
  54. 680  NEXT I
  55. 698  GOSUB 1200
  56. 699  RETURN 
  57. 700  REM  DRILL INITIALIZATION
  58. 705 X5 = 0
  59. 710  FOR I = 0 TO 4:E(I) = 0: NEXT I
  60. 799  RETURN 
  61. 800  REM  SET UP A PROBLEM
  62. 801  HOME : VTAB 2: HTAB 1
  63. 802  PRINT "PROBLEM NO. ";P;" OF ";M9
  64. 803  VTAB 23: PRINT "ENTER THE DIGIT INDICATED BY THE ";: FLASH : PRINT " ";: NORMAL 
  65. 804  VTAB 2: HTAB 27: PRINT "SUBTRACTION"
  66. 805 P(N0,0) = 0
  67. 810  FOR J = 0 TO S0 -1
  68. 815 A(J) = P(N0,J)
  69. 820  FOR I = 0 TO N0 -1
  70. 830 P(I,J) =  INT(10 * RND(1))
  71. 831  IF I = 0  THEN P(I,J) =  -P(I,J)
  72. 835 A(J) = A(J) +P(I,J)
  73. 836  IF I = 0  THEN P(I,J) =  -P(I,J)
  74. 840  NEXT I
  75. 845 P(N0,J +1) = 0
  76. 850  IF A(J) <0  THEN A(J) = A(J) +10:P(N0,J +1) =  -1
  77. 865  NEXT J
  78. 868  IF P(N0,S0) = 0  THEN  GOTO 900
  79. 870 X7 = P(1,S0 -1):P(1,S0 -1) = P(0,S0 -1):P(0,S0 -1) = X7
  80. 875  IF P(N0,S0 -1) = 0  THEN  GOTO 895
  81. 890  IF P(0,S0 -1) >0  THEN P(0,S0 -1) = P(0,S0 -1) -1
  82. 892  IF P(1,S0 -1) <9  THEN P(1,S0 -1) = P(1,S0 -1) +1
  83. 895 A(S0 -1) = P(1,S0 -1) +P(2,S0 -1) -P(0,S0 -1)
  84. 900  REM  DISPLAY
  85. 905  FOR I = 0 TO N0 -1
  86. 906  VTAB 12 +N0 -1 -2 *I
  87. 910  FOR J = 0 TO S0 -1
  88. 912  HTAB 20 +S0 -2 *J
  89. 915  PRINT P(I,J);
  90. 920  NEXT J
  91. 921  IF S0 = 1  THEN 929
  92. 922  FOR J = S0 -1 TO 1  STEP  -1: HTAB 20 +S0 -2 *J
  93. 924  IF P(I,J) < >0  THEN 929
  94. 925  PRINT " ";: NEXT J
  95. 929  NEXT I
  96. 930  VTAB 12 +N0: HTAB 20 -S0 -1
  97. 935  FOR J = 0 TO S0: PRINT "--";: NEXT J
  98. 945  VTAB 12 +N0 +1: HTAB 20 -S0 -7: PRINT "ANSWER"
  99. 950  VTAB 12 +N0 -1: HTAB 20 -S0: PRINT "-"
  100. 999  RETURN 
  101. 1000  REM  DRILL AND PRACTICE
  102. 1005  GOSUB 700: REM  INIT DRILL
  103. 1010  FOR P = 1 TO M9
  104. 1015 X3 =  FRE(0): REM  HOUSE CLEANING
  105. 1020  GOSUB 800: REM  SET UP A PROBLEM
  106. 1030  GOSUB 600: REM  GO THROUGH A PROBLEM
  107. 1040  NEXT P
  108. 1099  RETURN 
  109. 1100  REM  OPEN/APPEND PROCEDURE
  110. 1105  PRINT 
  111. 1110  PRINT D$;"APPEND ";N$
  112. 1120  PRINT D$;"WRITE ";N$
  113. 1129  RETURN 
  114. 1150  REM  CLOSE FILE PROCEDURE
  115. 1151  PRINT 
  116. 1155  PRINT D$;"CLOSE ";N$
  117. 1159  RETURN 
  118. 1200  REM  PAUSE PROCEDURE
  119. 1210  FOR Z7 = 0 TO 1500: NEXT Z7
  120. 1219  RETURN 
  121. 2000  REM  MAIN PROCEDURE
  122. 2010  GOSUB 2800: REM  GET STUDENT NAME AND SET UP DATA FILE
  123. 2020  GOSUB 1000: REM  DRILL PROCEDURE
  124. 2030  GOSUB 3000: REM  STUDENT WRAPUP
  125. 2040  HOME : VTAB 10: PRINT "IS THEIR ANOTHER STUDENT TO TAKE THIS"
  126. 2045  PRINT "DRILL (Y/N)? ";: GET A$: PRINT A$: HOME 
  127. 2050  IF A$ = "Y"  THEN 2000
  128. 2055  IF A$ < >"N"  THEN 2040
  129. 2099  RETURN 
  130. 2800 : REM  STUDENT SET UP
  131. 2810  HOME : VTAB 10: PRINT "PLEASE ENTER YOUR NAME"
  132. 2812  HTAB 10: PRINT "THEN PRESS 'RETURN'": PRINT 
  133. 2815  INPUT N$
  134. 2820  PRINT D$;"OPEN ";N$
  135. 2822  PRINT D$;"WRITE ";N$
  136. 2823  PRINT N$
  137. 2824  PRINT M9: PRINT N0: PRINT S0
  138. 2826  PRINT D$;"CLOSE ";N$
  139. 2830  FOR I = 0 TO 4:E(I) = 0: NEXT I
  140. 2899  RETURN 
  141. 3000  REM  STUDENT WRAPUP
  142. 3010  HOME : VTAB 3: PRINT "DRILL RESULTS FOR ";N$: PRINT : PRINT 
  143. 3011  PRINT D$;"OPEN ";N$;".FINAL"
  144. 3012  PRINT D$;"WRITE ";N$;".FINAL"
  145. 3014  PRINT "F,";M9
  146. 3016  PRINT X5: FOR K2 = 0 TO 3: PRINT E(K2): NEXT K2
  147. 3019  PRINT D$;"CLOSE ";N$;".FINAL"
  148. 3020  PRINT M9 -X5;" PROBLEMS CORRECT OUT OF ";M9: PRINT 
  149. 3030  PRINT "THAT'S "; INT(100 *(M9 -X5)/M9);"%": PRINT 
  150. 3040  PRINT : PRINT : PRINT 
  151. 3050  PRINT "ERRORS    FIRST     RETRY ": PRINT 
  152. 3060  PRINT "ANSWER";: HTAB 13: PRINT E(1);: HTAB 23: PRINT E(3): PRINT 
  153. 3080  GOSUB 1200: PRINT : PRINT 
  154. 3090  PRINT "ANY KEY TO CONTINUE";: GET A$: PRINT A$: HOME 
  155. 3099  RETURN 
  156. 4000  REM  MARQUE
  157. 4001  HOME 
  158. 4010  VTAB 2:A$ = "ARITHMETIC DRILL AND PRACTICE": GOSUB 4100
  159. 4020  VTAB 5:A$ = "COPYRIGHT (C) 1982 - J. BEIDLER": GOSUB 4100
  160. 4025  VTAB 7:A$ = "ALL RIGHTS RESERVED": GOSUB 4100
  161. 4029  GOSUB 1200
  162. 4090  GOSUB 1200: GOSUB 1200: GOSUB 1200
  163. 4099  RETURN 
  164. 4100  REM  CENTER ON GIVEN LINE
  165. 4110 X3 =  LEN(A$)
  166. 4120  HTAB 20 -(X3/2)
  167. 4130  PRINT A$
  168. 4199  RETURN 
  169. 7000  REM   SOUND ROUTINE
  170. 7001  GOSUB 8000
  171. 7005  REM   POKE6,TONE:POKE 7,TIME:CALL768
  172. 7010  POKE 768,173: POKE 769,48: POKE 770,192: POKE 771,136: POKE 772,208: POKE 773,4: POKE 774,198: POKE 775,7: POKE 776,240: POKE 777,8:
  173. 7020  POKE 778,202: POKE 779,208: POKE 780,246: POKE 781,166: POKE 782,6: POKE 783,76: POKE 784,0: POKE 785,3: POKE 786,96
  174. 7030  RETURN 
  175. 7099  RETURN 
  176. 7100  REM  SOUND CORRECT
  177. 7105  IF S$ < >"Y"  THEN  RETURN 
  178. 7110  POKE 6,15: POKE 7,30: CALL 768: RETURN 
  179. 7150  REM  SOUND INCORRECT
  180. 7155  IF S$ < >"Y"  THEN  RETURN 
  181. 7160  POKE 6,150: POKE 7,50: CALL 768: RETURN 
  182. 7800  REM  TEACHER SET UP
  183. 7809  VTAB 8
  184. 7810  PRINT "NUMBER OF DIGITS PER NUMBER (1-8)? ";
  185. 7811  GET A$: PRINT A$: IF (A$ <"1")  OR (A$ >"8")  THEN 7810
  186. 7812 S0 =  ASC(A$) - ASC("0")
  187. 7815 N0 = 2
  188. 7821  PRINT 
  189. 7822  PRINT "NUMBER OF RETRIES PER DIGIT (0-9)? ";
  190. 7823  GET A$: PRINT A$: IF (A$ <"0")  OR (A$ >"9") GOTO 7823
  191. 7824 R9 =  ASC(A$) - ASC("0")
  192. 7825  PRINT 
  193. 7826  INPUT "PROBLEMS PER DRILL (THEN 'RETURN')? ";M9
  194. 7830 C$ = "N"
  195. 7831  PRINT : PRINT 
  196. 7832  PRINT "AUDIO FEEDBACK (Y/N)? ";: GET S$: PRINT S$;
  197. 7834  IF (S$ < >"Y")  AND (S$ < >"N")  THEN 7832
  198. 7840  PRINT : PRINT 
  199. 7865  INVERSE : PRINT "INFORMATION CORRECT (Y/N)?";: NORMAL 
  200. 7868  GET A$: PRINT A$;
  201. 7875  IF A$ = "Y"  THEN  PRINT : RETURN 
  202. 7878  IF A$ < >"N"  THEN  HTAB 1: GOTO 7865
  203. 7880  HOME : GOSUB 7900: GOTO 7800
  204. 7899  RETURN 
  205. 7900  REM  BANNER
  206. 7910  INVERSE : FOR I = 2 TO 6
  207. 7920  VTAB I: FOR J = 8 TO 31
  208. 7930  HTAB J: PRINT " ";: NEXT J: NEXT I
  209. 7940  PRINT 
  210. 7950 A$ = "SUBRACTION DRILL": VTAB 3: HTAB 12: PRINT A$
  211. 7960 A$ = "TEACHER INITIALIZATION": VTAB 5: HTAB 9: PRINT A$
  212. 7995  NORMAL 
  213. 7999  RETURN 
  214. 8000  REM   TEACHER INITIALIZATION 
  215. 8005 D$ = "<CTRL-D>": REM  D$ = CNTL-D
  216. 8010  HOME 
  217. 8020  GOSUB 7900: REM   HEADLINE
  218. 8030  GOSUB 7800: REM   SET UP
  219. 8099  RETURN 
  220. 9000  REM  DATA DIRECTORY
  221. 9001  REM  A$ - GEN'L PURPOSE USE IN GET
  222. 9002  REM  A(7) - ANSWER ARRAY
  223. 9003  REM  C(7) - CARRY ARRAY
  224. 9004  REM  D$ - CNTL-D
  225. 9008  REM  E(4) - ERROR COUNTS 0-CARRY, 1-ANSWER, 2-CARRY RETRY, 3-ANSWER RETRY
  226. 9010  REM  M9 - NO. OF PROBLEMS PER DRILL
  227. 9019  REM  N$ - STUDENT7S NAME
  228. 9020  REM  N0 - NO. OF NUMBERS TO ADD PER PROBLEM
  229. 9024  REM  P - COUNT OF PROBLEM NUMBER
  230. 9025  REM  P(6,7) - 2-D ARRAY OF THE PROBLEM
  231. 9030  REM  S0 - SIZE OF EACH NUMBER
  232. 20000  REM  SYSTEM CHART
  233. 20010  REM 
  234. 20020  REM   1 - MAIN DRIVER
  235. 20030  REM      7000 - INITIALIZE
  236. 20040  REM          7900 - BANNER
  237. 20050  REM          7800 - TEACHER INPUT
  238. 20060  REM       2000 - MAIN PROCESS
  239. 20070  REM          2800 - INIT STUDENT FILE
  240. 20080  REM          1000 - DRILL PROCEDURE
  241. 20090  REM             700 - INIT DRILL VARIABLES
  242. 20100  REM             800 - MAKE UP AND PRINT THE PROBLEM
  243. 20110  REM             600 - DRILL LOOP
  244. 20120  REM                500 - ERROR IN ANSWER
  245. 20130  REM                   300 - PROBLEM TO FILE
  246. 20140  REM                400 - ERROR IN CARRY
  247. 20150  REM                   300 - PROBLEM TO FILE
  248. 20160  REM